"""控制关闭模块，用于关闭软件中各种需要外部控制关闭的"""

from src.core import log
from .variables.cache import Cache
from src.core.variables.status import *


def close_sse(
    sse_id_s: list = [],
):
    """关闭所有SSE连接"""
    # TODO 2025年6月24日 SSE关闭连接后，应当自动关闭对应的while循环，避免内存泄漏与资源浪费
    # TODO 2025年6月24日 1. all_apps_status关闭的契机是：客户端主动断开SSE连接
    for i in sse_id_s:
        sse_id = Cache.SSE_CACHE.get(f"{i}", None)
        if sse_id is not None:
            Cache.SSE_CACHE.set(f"{sse_id}", False)
            log.INFO(f"关闭SSE连接: {sse_id}")
            Cache.SSE_CACHE.delete(f"{i}")
            log.INFO(f"删除SSE连接: {i}")
        else:
            log.WARNING(f"SSE连接不存在: {sse_id}")
            return SUCCESS_CODE_CUSTOMIZE(f"SSE连接不存在: {i}", 400)
    if len(sse_id_s) > 0:
        log.INFO("所有SSE连接已关闭, 并从缓存中删除")
        return SUCCESS_CODE_CUSTOMIZE("SSE连接已关闭, 并从缓存中删除", 200)
    else:
        log.WARNING("没有SSE连接需要关闭")
        return ERROR_CODE_CUSTOMIZE("没有SSE连接需要关闭", 400)
